﻿//#region << 版 本 注 释 >>
///*----------------------------------------------------------------
// * 创建者：王明亮
// * 创建时间：2022/8/19 22:59:10
// * 版本：V1.0.0
// * 描述：
// *
// * ----------------------------------------------------------------
// * 修改人：
// * 时间：
// * 修改说明：
// *
// * 版本：V1.0.1
// *----------------------------------------------------------------*/
//#endregion << 版 本 注 释 >>

//using NPOI.HSSF.UserModel;
//using NPOI.SS.UserModel;
//using NPOI.SS.Util;
//using NPOI.XSSF.UserModel;
//using System;
//using System.Collections.Generic;
//using System.Data;
//using System.Linq;
//using System.Text;


//namespace Aliang.Common.Helper.Files
//{
//    /// <summary>
//    /// ExcelHelper 的摘要说明
//    /// </summary>
//    public class ExcelHelper
//    {
//        //获取列名委托方法
//        public delegate string GetColumnName(string columnName);

//        #region 导入导出Excel相关

//        /// <summary>
//        /// 将泛类型集合List类转换成DataTable
//        /// </summary>
//        /// <param name="list">泛类型集合</param>
//        /// <returns>返回转换后的DataTable</returns>
//        public static DataTable ListToDataTable<T>(List<T> entitys)
//        {
//            //生成DataTable的structure
//            var dt = new DataTable();
//            try
//            {
//                //检查泛型实体是否为空
//                if (entitys == null || entitys.Count < 1)
//                {
//                    return dt;
//                }
//                //取出第一个实体的所有Propertie
//                var entityType = entitys[0].GetType();
//                var entityProperties = entityType.GetProperties();
//                for (var i = 0; i < entityProperties.Length; i++)
//                {
//                    dt.Columns.Add(entityProperties[i].Name);
//                }
//                //将所有entity添加到DataTable中
//                foreach (object entity in entitys)
//                {
//                    //检查所有的的实体都为同一类型
//                    if (entity.GetType() != entityType)
//                    {
//                        throw new Exception("要转换的集合元素类型不一致");
//                    }
//                    var entityValues = new object[entityProperties.Length];
//                    for (var i = 0; i < entityProperties.Length; i++)
//                    {
//                        entityValues[i] = entityProperties[i].GetValue(entity, null);
//                    }
//                    dt.Rows.Add(entityValues);
//                }
//            }
//            catch (Exception e)
//            {
//                Console.WriteLine(e);
//            }
//            return dt;
//        }

//        /// <summary>
//        /// 将dataTable转换为Excel字节流
//        /// </summary>
//        /// <param name="dt"></param>
//        /// <param name="getColumnName"></param>
//        /// <returns></returns>
//        public static byte[] GetExcelForXLSX(DataTable dt, GetColumnName getColumnName, string title = "")
//        {
//            var xssfworkbook = new XSSFWorkbook();
//            var sheet = xssfworkbook.CreateSheet("Sheet");
//            sheet.DefaultColumnWidth = 20;
//            sheet.DefaultRowHeight = 500;
//            //设置表头
//            var rowTitle = sheet.CreateRow(0);
//            var cellTitle = rowTitle.CreateCell(0);
//            byte[] rgd1 = { 221, 221, 221 };
//            SetTitleCellStyle(cellTitle, xssfworkbook, rgd1);
//            cellTitle.SetCellValue(title);


//            //列名
//            var row = sheet.CreateRow(1);
//            int k = 0;
//            for (var i = 0; i < dt.Columns.Count; i++)
//            {
//                //列名称,数据库中字段
//                var columnName = dt.Columns[i].ColumnName;
//                var convertColumnName = getColumnName(columnName);
//                if (!string.IsNullOrEmpty(convertColumnName))
//                {
//                    var cell = row.CreateCell(k);
//                    byte[] rgd = { 221, 221, 221 };
//                    SetCellStyle(cell, xssfworkbook, rgd);
//                    SetBorder(cell);
//                    cell.SetCellValue(convertColumnName);
//                    k++;
//                }
//            }
//            //合并表头单元格
//            CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, k - 1);
//            sheet.AddMergedRegion(cellRangeAddress);

//            //数据
//            for (var i = 0; i < dt.Rows.Count; i++)
//            {
//                int h = 0;
//                var row1 = sheet.CreateRow(i + 2);
//                for (var j = 0; j < dt.Columns.Count; j++)
//                {
//                    var convertColumnName = getColumnName(dt.Columns[j].ToString());
//                    if (!string.IsNullOrEmpty(convertColumnName))
//                    {
//                        var cell = row1.CreateCell(h);
//                        cell.SetCellValue(dt.Rows[i][j].ToString());
//                        h++;
//                    }
//                }
//            }
//            //转为字节数组
//            var stream = new MemoryStream();
//            xssfworkbook.Write(stream);
//            var buf = stream.ToArray();
//            return buf;
//        }

//        /// <summary>
//        /// 设置边框
//        /// </summary>
//        /// <param name="cell"></param>
//        private static void SetBorder(ICell cell)
//        {
//            cell.CellStyle.BorderLeft = BorderStyle.Thin;
//            cell.CellStyle.BorderRight = BorderStyle.Thin;
//            cell.CellStyle.BorderTop = BorderStyle.Thin;
//            cell.CellStyle.BorderBottom = BorderStyle.Thin;
//        }

//        /// <summary>
//        /// 设置样式
//        /// </summary>
//        /// <param name="cell"></param>
//        private static void SetCellStyle(ICell cell, XSSFWorkbook xSSFWorkbook, byte[] rgd)
//        {
//            XSSFCellStyle xSSFCellStyle = (XSSFCellStyle)xSSFWorkbook.CreateCellStyle();
//            xSSFCellStyle.FillPattern = FillPattern.SolidForeground;
//            XSSFColor xSSFColor = new XSSFColor();
//            xSSFColor.SetRgb(rgd);
//            xSSFCellStyle.SetFillForegroundColor(xSSFColor);
//            cell.CellStyle = xSSFCellStyle;
//        }

//        /// <summary>
//        /// 设置居中样式
//        /// </summary>
//        /// <param name="cell"></param>
//        private static void SetTitleCellStyle(ICell cell, XSSFWorkbook xSSFWorkbook, byte[] rgd)
//        {
//            XSSFCellStyle xSSFCellStyle = (XSSFCellStyle)xSSFWorkbook.CreateCellStyle();
//            xSSFCellStyle.FillPattern = FillPattern.SolidForeground;
//            XSSFColor xSSFColor = new XSSFColor();
//            xSSFColor.SetRgb(rgd);
//            xSSFCellStyle.SetFillForegroundColor(xSSFColor);

//            xSSFCellStyle.Alignment = HorizontalAlignment.Center;
//            var font = xSSFWorkbook.CreateFont();
//            font.FontHeightInPoints = 18;//设置字体大小  
//            xSSFCellStyle.SetFont(font);
//            xSSFCellStyle.BorderRight = BorderStyle.Thin;
//            cell.CellStyle = xSSFCellStyle;
//        }
//        #endregion
//    }
//}
